package com.tucc.hello.sort;

import java.util.Arrays;

/**
 * @author tucc
 * @description todo
 * @package com.tucc.hello.sort
 * @date 2021/5/27
 **/
public class CommonSort {


    public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    arr[j] ^= arr[j + 1];
                    arr[j + 1] ^= arr[j];
                    arr[j] ^= arr[j + 1];
                }
            }
        }
    }

    public static void insertSort(int[] arr){
        for(int i = 1;i < arr.length;i ++){
            for(int j = 0;j < i;j ++){
                if(arr[i] < arr[j]){
                    int temp = arr[i];
                    for(int k = i;k > j;k --){
                        arr[k] = arr[k - 1];
                    }
                    arr[j] = temp;
                    break;
                }
            }
        }
    }


    public static void selectSort(int[] arr){
        for(int i = 0;i < arr.length - 1;i ++){
            int curInx = i;
            for(int j = i + 1;j < arr.length;j ++){
                if(arr[j] < arr[curInx]){
                    curInx = j;
                }
            }
            if(curInx != i){
                arr[curInx] ^= arr[i];
                arr[i] ^= arr[curInx];
                arr[curInx] ^= arr[i];
            }
        }
    }


    public static void printArray(int[] arr) {
        Arrays.stream(arr).mapToObj(o -> o + " ").forEach(System.out::print);
        System.out.println();
    }

    public static void main(String[] args) {
        int[] arr = {3, 1, 8, 4, 5, 2};
//        bubbleSort(arr);
//        insertSort(arr);
        selectSort(arr);
        printArray(arr);
    }
}
